--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / backend / licenses_collector.py
Displaying Raw • Download
meshchatx/src/backend/licenses_collector.py fee9e3356259c967b89373cf94deec01e6a5e6b3 (fee9e335) Text, 17.68 KB
T8b949e# SPDX-License-Identifier: 0BSD
T8b949e"""Collect third-party license metadata for Python (backend) and Node (frontend)."""
Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations
Tff7b72import T7ee787glob
Tff7b72import T7ee787importlibT7ee787.T7ee787metadata
Tff7b72import T7ee787json
Tff7b72import T7ee787shutil
Tff7b72import T7ee787subprocess
Tff7b72import T7ee787sys
Tff7b72import T7ee787tomllib
Tff7b72from T7ee787datetime Tff7b72import Te6edf3UTCTb4b4b4, Te6edf3datetime
Tff7b72from T7ee787pathlib Tff7b72import Te6edf3Path
Tff7b72from T7ee787typing Tff7b72import Te6edf3Any
Tff7b72from T7ee787packagingT7ee787.T7ee787requirements Tff7b72import Te6edf3InvalidRequirementTb4b4b4, Te6edf3Requirement
Tff7b72from T7ee787packagingT7ee787.T7ee787utils Tff7b72import Te6edf3canonicalize_name
Te6edf3_ROOT_DIST_CANDIDATES Tff7b72= Tb4b4b4(Ta5d6ff"Ta5d6ffreticulum-meshchatxTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffreticulum_meshchatxTa5d6ff"Tb4b4b4)
Te6edf3_DATA_SUBPATH Tff7b72= Te6edf3PathTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatxTa5d6ff"Tb4b4b4) Tff7b72/ Ta5d6ff"Ta5d6ffsrcTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffbackendTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffdataTa5d6ff"
Te6edf3_FRONTEND_LICENSES_FILENAME Tff7b72= Ta5d6ff"Ta5d6fflicenses_frontend.jsonTa5d6ff"
Te6edf3_THIRD_PARTY_NOTICES_FILENAME Tff7b72= Ta5d6ff"Ta5d6ffTHIRD_PARTY_NOTICES.txtTa5d6ff"
Tff7b72def Td2a8ff_repo_rootTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Te6edf3PathTb4b4b4:
Tff7b72import T7ee787meshchatx
Tff7b72return Te6edf3PathTb4b4b4(Te6edf3meshchatxTff7b72.Td2a8ff__file__Tb4b4b4)Tff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparentTff7b72.Td2a8ffparent
Tff7b72def Td2a8ff_license_from_metadataTb4b4b4(Te6edf3metaTb4b4b4: Te6edf3importlibTff7b72.Td2a8ffmetadataTff7b72.Td2a8ffMetadataTb4b4b4) Tff7b72-Tff7b72> Tffa657strTb4b4b4:
Te6edf3le Tff7b72= Te6edf3metaTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffLicense-ExpressionTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3leTb4b4b4:
Tff7b72return Tffa657strTb4b4b4(Te6edf3leTb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3lic Tff7b72= Te6edf3metaTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffLicenseTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3lic Tff7b72and Tffa657strTb4b4b4(Te6edf3licTb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72and Tffa657strTb4b4b4(Te6edf3licTb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffupperTb4b4b4(Tb4b4b4) Tff7b72!= Ta5d6ff"Ta5d6ffUNKNOWNTa5d6ff"Tb4b4b4:
Tff7b72return Tffa657strTb4b4b4(Te6edf3licTb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3classifiers Tff7b72= Te6edf3metaTff7b72.Td2a8ffget_allTb4b4b4(Ta5d6ff"Ta5d6ffClassifierTa5d6ff"Tb4b4b4) Tff7b72or Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3line Tff7b72in Te6edf3classifiersTb4b4b4:
Tff7b72if Te6edf3lineTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ffLicense ::Ta5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3lineTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ff::Ta5d6ff"Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72return Ta5d6ff"Ta5d6ff—Ta5d6ff"
Tff7b72def Td2a8ff_author_from_metadataTb4b4b4(Te6edf3metaTb4b4b4: Te6edf3importlibTff7b72.Td2a8ffmetadataTff7b72.Td2a8ffMetadataTb4b4b4) Tff7b72-Tff7b72> Tffa657strTb4b4b4:
Te6edf3a Tff7b72= Tb4b4b4(Te6edf3metaTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffAuthorTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3aTb4b4b4:
Tff7b72return Te6edf3a
Te6edf3ae Tff7b72= Tb4b4b4(Te6edf3metaTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffAuthor-emailTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3aeTb4b4b4:
Tff7b72return Te6edf3ae
Te6edf3m Tff7b72= Tb4b4b4(Te6edf3metaTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffMaintainerTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3mTb4b4b4:
Tff7b72return Te6edf3m
Tff7b72return Ta5d6ff"Ta5d6ff—Ta5d6ff"
Tff7b72def Td2a8ff_dist_for_requirement_nameTb4b4b4(Te6edf3nameTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Te6edf3importlibTff7b72.Td2a8ffmetadataTff7b72.Td2a8ffDistribution Tff7b72| Tff7b72NoneTb4b4b4:
Te6edf3key Tff7b72= Te6edf3canonicalize_nameTb4b4b4(Te6edf3nameTb4b4b4)
Tff7b72tryTb4b4b4:
Tff7b72return Te6edf3importlibTff7b72.Td2a8ffmetadataTff7b72.Td2a8ffdistributionTb4b4b4(Te6edf3keyTb4b4b4)
Tff7b72except Te6edf3importlibTff7b72.Td2a8ffmetadataTff7b72.Td2a8ffPackageNotFoundErrorTb4b4b4:
Tff7b72pass
Tff7b72tryTb4b4b4:
Tff7b72return Te6edf3importlibTff7b72.Td2a8ffmetadataTff7b72.Td2a8ffdistributionTb4b4b4(Te6edf3nameTb4b4b4)
Tff7b72except Te6edf3importlibTff7b72.Td2a8ffmetadataTff7b72.Td2a8ffPackageNotFoundErrorTb4b4b4:
Tff7b72return Tff7b72None
Tff7b72def Td2a8ff_collect_python_transitiveTb4b4b4(Te6edf3root_namesTb4b4b4: Tffa657tupleTb4b4b4[Tffa657strTb4b4b4, Tff7b72.Tff7b72.Tff7b72.Tb4b4b4]Tb4b4b4) Tff7b72-Tff7b72> Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]Tb4b4b4:
Te6edf3rowsTb4b4b4: Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4] Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3seenTb4b4b4: Tffa657setTb4b4b4[Tffa657strTb4b4b4] Tff7b72= Tffa657setTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffvisitTb4b4b4(Te6edf3nameTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3cname Tff7b72= Te6edf3canonicalize_nameTb4b4b4(Te6edf3nameTb4b4b4)
Tff7b72if Te6edf3cname Tff7b72in Te6edf3seenTb4b4b4:
Tff7b72return
Te6edf3dist Tff7b72= Te6edf3_dist_for_requirement_nameTb4b4b4(Te6edf3nameTb4b4b4)
Tff7b72if Te6edf3dist Tff7b72is Tff7b72NoneTb4b4b4:
Tff7b72return
Te6edf3seenTff7b72.Td2a8ffaddTb4b4b4(Te6edf3cnameTb4b4b4)
Te6edf3meta Tff7b72= Te6edf3distTff7b72.Td2a8ffmetadata
Te6edf3pkg_name Tff7b72= Te6edf3metaTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffNameTa5d6ff"Tb4b4b4) Tff7b72or Te6edf3name
Te6edf3rowsTff7b72.Td2a8ffappendTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4: Tffa657strTb4b4b4(Te6edf3pkg_nameTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4: Te6edf3distTff7b72.Td2a8ffversionTb4b4b4,
Ta5d6ff"Ta5d6ffauthorTa5d6ff"Tb4b4b4: Te6edf3_author_from_metadataTb4b4b4(Te6edf3metaTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6fflicenseTa5d6ff"Tb4b4b4: Te6edf3_license_from_metadataTb4b4b4(Te6edf3metaTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72for Te6edf3req_str Tff7b72in Te6edf3distTff7b72.Td2a8ffrequires Tff7b72or Tb4b4b4[Tb4b4b4]Tb4b4b4:
Tff7b72if Tff7b72not Tb4b4b4(Te6edf3req_str Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72continue
Tff7b72tryTb4b4b4:
Te6edf3req Tff7b72= Te6edf3RequirementTb4b4b4(Te6edf3req_strTb4b4b4)
Tff7b72except Te6edf3InvalidRequirementTb4b4b4:
Tff7b72continue
Tff7b72if Te6edf3reqTff7b72.Td2a8ffextras Tff7b72and Tff7b72not Te6edf3reqTff7b72.Td2a8ffmarkerTb4b4b4:
Tff7b72pass
Tff7b72if Te6edf3reqTff7b72.Td2a8ffmarker Tff7b72is Tff7b72not Tff7b72None Tff7b72and Tff7b72not Te6edf3reqTff7b72.Td2a8ffmarkerTff7b72.Td2a8ffevaluateTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72continue
Te6edf3visitTb4b4b4(Te6edf3reqTff7b72.Td2a8ffnameTb4b4b4)
Tff7b72for Te6edf3root Tff7b72in Te6edf3root_namesTb4b4b4:
Te6edf3visitTb4b4b4(Te6edf3rootTb4b4b4)
Te6edf3rowsTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3rTb4b4b4: Te6edf3rTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3rows
Tff7b72def Td2a8ff_python_roots_from_pyprojectTb4b4b4(Te6edf3repo_rootTb4b4b4: Te6edf3PathTb4b4b4) Tff7b72-Tff7b72> Tffa657tupleTb4b4b4[Tffa657strTb4b4b4, Tff7b72.Tff7b72.Tff7b72.Tb4b4b4]Tb4b4b4:
Te6edf3pyproject Tff7b72= Te6edf3repo_root Tff7b72/ Ta5d6ff"Ta5d6ffpyproject.tomlTa5d6ff"
Tff7b72if Tff7b72not Te6edf3pyprojectTff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3_ROOT_DIST_CANDIDATESTb4b4b4[Tb4b4b4:T79c0ff1Tb4b4b4]
Tff7b72tryTb4b4b4:
Tff7b72with Te6edf3pyprojectTff7b72.Td2a8ffopenTb4b4b4(Ta5d6ff"Ta5d6ffrbTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3fTb4b4b4:
Te6edf3data Tff7b72= Te6edf3tomllibTff7b72.Td2a8ffloadTb4b4b4(Te6edf3fTb4b4b4)
Tff7b72except Tf85149OSErrorTb4b4b4:
Tff7b72return Te6edf3_ROOT_DIST_CANDIDATESTb4b4b4[Tb4b4b4:T79c0ff1Tb4b4b4]
Te6edf3deps Tff7b72= Tb4b4b4(Te6edf3dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffprojectTa5d6ff"Tb4b4b4) Tff7b72or Tb4b4b4{Tb4b4b4}Tb4b4b4)Tff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdependenciesTa5d6ff"Tb4b4b4) Tff7b72or Tb4b4b4[Tb4b4b4]
Te6edf3namesTb4b4b4: Tffa657listTb4b4b4[Tffa657strTb4b4b4] Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3line Tff7b72in Te6edf3depsTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3req Tff7b72= Te6edf3RequirementTb4b4b4(Te6edf3lineTb4b4b4)
Tff7b72except Te6edf3InvalidRequirementTb4b4b4:
Tff7b72continue
Te6edf3namesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3reqTff7b72.Td2a8ffnameTb4b4b4)
Tff7b72if Tff7b72not Te6edf3namesTb4b4b4:
Tff7b72return Te6edf3_ROOT_DIST_CANDIDATESTb4b4b4[Tb4b4b4:T79c0ff1Tb4b4b4]
Tff7b72return Tffa657tupleTb4b4b4(Tffa657sortedTb4b4b4(Tffa657setTb4b4b4(Te6edf3namesTb4b4b4)Tb4b4b4, Te6edf3keyTff7b72=Tff7b72lambda Te6edf3nTb4b4b4: Te6edf3nTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ff_bundled_lxmfy_license_rowTb4b4b4(Te6edf3repo_rootTb4b4b4: Te6edf3PathTb4b4b4) Tff7b72-Tff7b72> Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4] Tff7b72| Tff7b72NoneTb4b4b4:
Tff7b72if Te6edf3_dist_for_requirement_nameTb4b4b4(Ta5d6ff"Ta5d6fflxmfyTa5d6ff"Tb4b4b4) Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Tff7b72return Tff7b72None
Te6edf3vp Tff7b72= Te6edf3repo_root Tff7b72/ Ta5d6ff"Ta5d6ffvendorTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6fflxmfyTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffpyproject.tomlTa5d6ff"
Tff7b72if Tff7b72not Te6edf3vpTff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None
Tff7b72tryTb4b4b4:
Tff7b72with Te6edf3vpTff7b72.Td2a8ffopenTb4b4b4(Ta5d6ff"Ta5d6ffrbTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3fTb4b4b4:
Te6edf3data Tff7b72= Te6edf3tomllibTff7b72.Td2a8ffloadTb4b4b4(Te6edf3fTb4b4b4)
Tff7b72except Tf85149OSErrorTb4b4b4:
Tff7b72return Tff7b72None
Te6edf3proj Tff7b72= Te6edf3dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffprojectTa5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3projTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None
Te6edf3name Tff7b72= Te6edf3projTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3name Tff7b72!= Ta5d6ff"Ta5d6fflxmfyTa5d6ff"Tb4b4b4:
Tff7b72return Tff7b72None
Te6edf3version Tff7b72= Te6edf3projTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4)
Te6edf3version_s Tff7b72= Te6edf3versionTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3versionTb4b4b4, Tffa657strTb4b4b4) Tff7b72and Te6edf3versionTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Ta5d6ff"Ta5d6ff—Ta5d6ff"
Te6edf3author Tff7b72= Ta5d6ff"Ta5d6ff—Ta5d6ff"
Te6edf3authors Tff7b72= Te6edf3projTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffauthorsTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3authorsTb4b4b4, Tffa657listTb4b4b4) Tff7b72and Te6edf3authorsTb4b4b4:
Te6edf3first Tff7b72= Te6edf3authorsTb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3firstTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Te6edf3an Tff7b72= Tb4b4b4(Te6edf3firstTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3ae Tff7b72= Tb4b4b4(Te6edf3firstTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffemailTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3an Tff7b72and Te6edf3aeTb4b4b4:
Te6edf3author Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3anTffd700}Ta5d6ff <Tffd700{Te6edf3aeTffd700}Ta5d6ff>Ta5d6ff"
Tff7b72elif Te6edf3an Tff7b72or Te6edf3aeTb4b4b4:
Te6edf3author Tff7b72= Te6edf3an Tff7b72or Te6edf3ae
Te6edf3lic Tff7b72= Te6edf3projTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflicenseTa5d6ff"Tb4b4b4)
Te6edf3license_s Tff7b72= Te6edf3licTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3licTb4b4b4, Tffa657strTb4b4b4) Tff7b72and Te6edf3licTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Ta5d6ff"Ta5d6ff—Ta5d6ff"
Tff7b72return Tb4b4b4{
Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmfyTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4: Te6edf3version_sTb4b4b4,
Ta5d6ff"Ta5d6ffauthorTa5d6ff"Tb4b4b4: Te6edf3authorTb4b4b4,
Ta5d6ff"Ta5d6fflicenseTa5d6ff"Tb4b4b4: Te6edf3license_sTb4b4b4,
Tb4b4b4}
Tff7b72def Td2a8ff_merge_bundled_lxmfyTb4b4b4(
Te6edf3repo_rootTb4b4b4: Te6edf3PathTb4b4b4, Te6edf3rowsTb4b4b4: Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]
Tb4b4b4) Tff7b72-Tff7b72> Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]Tb4b4b4:
Tff7b72if Tffa657anyTb4b4b4(Tffa657strTb4b4b4(Te6edf3rTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6fflxmfyTa5d6ff" Tff7b72for Te6edf3r Tff7b72in Te6edf3rowsTb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3rows
Te6edf3row Tff7b72= Te6edf3_bundled_lxmfy_license_rowTb4b4b4(Te6edf3repo_rootTb4b4b4)
Tff7b72if Te6edf3row Tff7b72is Tff7b72NoneTb4b4b4:
Tff7b72return Te6edf3rows
Te6edf3merged Tff7b72= Tb4b4b4[Tff7b72*Te6edf3rowsTb4b4b4, Te6edf3rowTb4b4b4]
Te6edf3mergedTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3rTb4b4b4: Tffa657strTb4b4b4(Te6edf3rTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3merged
Tff7b72def Td2a8ffcollect_backend_licensesTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]Tb4b4b4:
Te6edf3repo Tff7b72= Te6edf3_repo_rootTb4b4b4(Tb4b4b4)
Tff7b72for Te6edf3root Tff7b72in Te6edf3_ROOT_DIST_CANDIDATESTb4b4b4:
Tff7b72if Te6edf3_dist_for_requirement_nameTb4b4b4(Te6edf3rootTb4b4b4) Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Tff7b72return Te6edf3_merge_bundled_lxmfyTb4b4b4(Te6edf3repoTb4b4b4, Te6edf3_collect_python_transitiveTb4b4b4(Tb4b4b4(Te6edf3rootTb4b4b4,Tb4b4b4)Tb4b4b4)Tb4b4b4)
Te6edf3roots Tff7b72= Te6edf3_python_roots_from_pyprojectTb4b4b4(Te6edf3repoTb4b4b4)
Tff7b72return Te6edf3_merge_bundled_lxmfyTb4b4b4(Te6edf3repoTb4b4b4, Te6edf3_collect_python_transitiveTb4b4b4(Te6edf3rootsTb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ff_license_from_package_jsonTb4b4b4(Te6edf3dataTb4b4b4: Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4) Tff7b72-Tff7b72> Tffa657strTb4b4b4:
Te6edf3lic Tff7b72= Te6edf3dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflicenseTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3licTb4b4b4, Tffa657strTb4b4b4) Tff7b72and Te6edf3licTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3licTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3licTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Te6edf3t Tff7b72= Te6edf3licTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3tTb4b4b4, Tffa657strTb4b4b4) Tff7b72and Te6edf3tTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3tTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3licenses Tff7b72= Te6edf3dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflicensesTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3licensesTb4b4b4, Tffa657listTb4b4b4) Tff7b72and Te6edf3licensesTb4b4b4:
Te6edf3first Tff7b72= Te6edf3licensesTb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3firstTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Te6edf3t Tff7b72= Te6edf3firstTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3tTb4b4b4, Tffa657strTb4b4b4) Tff7b72and Te6edf3tTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3tTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72return Ta5d6ff"Ta5d6ff—Ta5d6ff"
Tff7b72def Td2a8ff_author_from_package_jsonTb4b4b4(Te6edf3dataTb4b4b4: Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4) Tff7b72-Tff7b72> Tffa657strTb4b4b4:
Te6edf3author Tff7b72= Te6edf3dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffauthorTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3authorTb4b4b4, Tffa657strTb4b4b4) Tff7b72and Te6edf3authorTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3authorTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3authorTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Te6edf3name Tff7b72= Tb4b4b4(Te6edf3authorTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3email Tff7b72= Tb4b4b4(Te6edf3authorTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffemailTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3name Tff7b72and Te6edf3emailTb4b4b4:
Tff7b72return Ta5d6fffTa5d6ff"Tffd700{Te6edf3nameTffd700}Ta5d6ff <Tffd700{Te6edf3emailTffd700}Ta5d6ff>Ta5d6ff"
Tff7b72if Te6edf3name Tff7b72or Te6edf3emailTb4b4b4:
Tff7b72return Te6edf3name Tff7b72or Te6edf3email
Te6edf3contributors Tff7b72= Te6edf3dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffcontributorsTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3contributorsTb4b4b4, Tffa657listTb4b4b4) Tff7b72and Te6edf3contributorsTb4b4b4:
Te6edf3first Tff7b72= Te6edf3contributorsTb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3firstTb4b4b4, Tffa657strTb4b4b4) Tff7b72and Te6edf3firstTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3firstTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3firstTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Te6edf3name Tff7b72= Tb4b4b4(Te6edf3firstTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3email Tff7b72= Tb4b4b4(Te6edf3firstTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffemailTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3name Tff7b72and Te6edf3emailTb4b4b4:
Tff7b72return Ta5d6fffTa5d6ff"Tffd700{Te6edf3nameTffd700}Ta5d6ff <Tffd700{Te6edf3emailTffd700}Ta5d6ff>Ta5d6ff"
Tff7b72if Te6edf3name Tff7b72or Te6edf3emailTb4b4b4:
Tff7b72return Te6edf3name Tff7b72or Te6edf3email
Tff7b72return Ta5d6ff"Ta5d6ff—Ta5d6ff"
Tff7b72def Td2a8ff_workspace_root_npm_identityTb4b4b4(Te6edf3repo_rootTb4b4b4: Te6edf3PathTb4b4b4) Tff7b72-Tff7b72> Tffa657tupleTb4b4b4[Tffa657str Tff7b72| Tff7b72NoneTb4b4b4, Tffa657str Tff7b72| Tff7b72NoneTb4b4b4]Tb4b4b4:
T8b949e"""Return ``(name_lower, version)`` from the repository root ``package.json``."""
Te6edf3pj Tff7b72= Te6edf3repo_root Tff7b72/ Ta5d6ff"Ta5d6ffpackage.jsonTa5d6ff"
Tff7b72if Tff7b72not Te6edf3pjTff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72NoneTb4b4b4, Tff7b72None
Tff7b72tryTb4b4b4:
Te6edf3data Tff7b72= Te6edf3jsonTff7b72.Td2a8ffloadsTb4b4b4(Te6edf3pjTff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72except Tb4b4b4(Tf85149OSErrorTb4b4b4, Te6edf3jsonTff7b72.Td2a8ffJSONDecodeErrorTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72NoneTb4b4b4, Tff7b72None
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3dataTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72NoneTb4b4b4, Tff7b72None
Te6edf3name Tff7b72= Te6edf3dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4)
Te6edf3ver Tff7b72= Te6edf3dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3nameTb4b4b4, Tffa657strTb4b4b4) Tff7b72or Tff7b72not Te6edf3nameTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72NoneTb4b4b4, Tff7b72None
Te6edf3vn Tff7b72= Te6edf3nameTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)
Te6edf3vv Tff7b72= Te6edf3verTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3verTb4b4b4, Tffa657strTb4b4b4) Tff7b72and Te6edf3verTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Tff7b72None
Tff7b72return Te6edf3vnTb4b4b4, Te6edf3vv
Tff7b72def Td2a8ff_filter_out_workspace_root_packageTb4b4b4(
Te6edf3rowsTb4b4b4: Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]Tb4b4b4,
Te6edf3repo_rootTb4b4b4: Te6edf3PathTb4b4b4,
Tb4b4b4) Tff7b72-Tff7b72> Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]Tb4b4b4:
T8b949e"""Drop the workspace app itself so it is not listed as a third-party Node dep."""
Te6edf3root_nameTb4b4b4, Te6edf3root_ver Tff7b72= Te6edf3_workspace_root_npm_identityTb4b4b4(Te6edf3repo_rootTb4b4b4)
Tff7b72if Tff7b72not Te6edf3root_nameTb4b4b4:
Tff7b72return Te6edf3rows
Te6edf3outTb4b4b4: Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4] Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3r Tff7b72in Te6edf3rowsTb4b4b4:
Te6edf3n Tff7b72= Tffa657strTb4b4b4(Te6edf3rTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)
Te6edf3v Tff7b72= Tffa657strTb4b4b4(Te6edf3rTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3n Tff7b72== Te6edf3root_name Tff7b72and Tb4b4b4(Te6edf3root_ver Tff7b72is Tff7b72None Tff7b72or Te6edf3v Tff7b72== Te6edf3root_verTb4b4b4)Tb4b4b4:
Tff7b72continue
Te6edf3outTff7b72.Td2a8ffappendTb4b4b4(Te6edf3rTb4b4b4)
Tff7b72return Te6edf3out
Tff7b72def Td2a8ffcollect_frontend_from_node_modulesTb4b4b4(Te6edf3repo_rootTb4b4b4: Te6edf3PathTb4b4b4) Tff7b72-Tff7b72> Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]Tb4b4b4:
T8b949e"""Collect license rows by scanning node_modules/**/package.json.
Used when ``pnpm licenses list`` is unavailable or fails (e.g. pnpm lockfile
bugs). Recursive glob follows symlinks so pnpm-linked layouts are included.
"""
Te6edf3nm Tff7b72= Te6edf3repo_root Tff7b72/ Ta5d6ff"Ta5d6ffnode_modulesTa5d6ff"
Tff7b72if Tff7b72not Te6edf3nmTff7b72.Td2a8ffis_dirTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4[Tb4b4b4]
Te6edf3pattern Tff7b72= Tffa657strTb4b4b4(Te6edf3nm Tff7b72/ Ta5d6ff"Ta5d6ff**Ta5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffpackage.jsonTa5d6ff"Tb4b4b4)
Te6edf3paths Tff7b72= Tffa657sortedTb4b4b4(Te6edf3globTff7b72.Td2a8ffglobTb4b4b4(Te6edf3patternTb4b4b4, Te6edf3recursiveTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4)
Te6edf3seenTb4b4b4: Tffa657setTb4b4b4[Tffa657tupleTb4b4b4[Tffa657strTb4b4b4, Tffa657strTb4b4b4]Tb4b4b4] Tff7b72= Tffa657setTb4b4b4(Tb4b4b4)
Te6edf3rowsTb4b4b4: Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4] Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3pkg_path_str Tff7b72in Te6edf3pathsTb4b4b4:
Te6edf3pkg_path Tff7b72= Te6edf3PathTb4b4b4(Te6edf3pkg_path_strTb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3raw Tff7b72= Te6edf3pkg_pathTff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72except Tf85149OSErrorTb4b4b4:
Tff7b72continue
Tff7b72tryTb4b4b4:
Te6edf3data Tff7b72= Te6edf3jsonTff7b72.Td2a8ffloadsTb4b4b4(Te6edf3rawTb4b4b4)
Tff7b72except Te6edf3jsonTff7b72.Td2a8ffJSONDecodeErrorTb4b4b4:
Tff7b72continue
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3dataTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72continue
Te6edf3name Tff7b72= Te6edf3dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3nameTb4b4b4, Tffa657strTb4b4b4) Tff7b72or Tff7b72not Te6edf3nameTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72continue
Te6edf3version Tff7b72= Te6edf3dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3versionTb4b4b4, Tffa657strTb4b4b4) Tff7b72or Tff7b72not Te6edf3versionTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3version Tff7b72= Ta5d6ff"Ta5d6ff?Ta5d6ff"
Te6edf3key Tff7b72= Tb4b4b4(Te6edf3nameTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3versionTb4b4b4)
Tff7b72if Te6edf3key Tff7b72in Te6edf3seenTb4b4b4:
Tff7b72continue
Te6edf3seenTff7b72.Td2a8ffaddTb4b4b4(Te6edf3keyTb4b4b4)
Te6edf3rowsTff7b72.Td2a8ffappendTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4: Te6edf3nameTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4: Te6edf3versionTb4b4b4,
Ta5d6ff"Ta5d6ffauthorTa5d6ff"Tb4b4b4: Te6edf3_author_from_package_jsonTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6fflicenseTa5d6ff"Tb4b4b4: Te6edf3_license_from_package_jsonTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Te6edf3rowsTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3rTb4b4b4: Te6edf3rTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3rows
Tff7b72def Td2a8ff_try_pnpm_licensesTb4b4b4(Te6edf3repo_rootTb4b4b4: Te6edf3PathTb4b4b4) Tff7b72-Tff7b72> Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4] Tff7b72| Tff7b72NoneTb4b4b4:
Te6edf3pnpm Tff7b72= Te6edf3shutilTff7b72.Td2a8ffwhichTb4b4b4(Ta5d6ff"Ta5d6ffpnpmTa5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3pnpmTb4b4b4:
Tff7b72return Tff7b72None
Tff7b72tryTb4b4b4:
Te6edf3proc Tff7b72= Te6edf3subprocessTff7b72.Td2a8ffrunTb4b4b4(
Tb4b4b4[Te6edf3pnpmTb4b4b4, Ta5d6ff"Ta5d6fflicensesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fflistTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--jsonTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3cwdTff7b72=Te6edf3repo_rootTb4b4b4,
Te6edf3capture_outputTff7b72=Tff7b72TrueTb4b4b4,
Te6edf3textTff7b72=Tff7b72TrueTb4b4b4,
Te6edf3timeoutTff7b72=T79c0ff120Tb4b4b4,
Te6edf3checkTff7b72=Tff7b72FalseTb4b4b4,
Tb4b4b4)
Tff7b72except Tb4b4b4(Te6edf3subprocessTff7b72.Td2a8ffTimeoutExpiredTb4b4b4, Tf85149OSErrorTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None
Tff7b72if Te6edf3procTff7b72.Td2a8ffreturncode Tff7b72!= T79c0ff0 Tff7b72or Tff7b72not Tb4b4b4(Te6edf3procTff7b72.Td2a8ffstdout Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None
Tff7b72tryTb4b4b4:
Te6edf3parsed Tff7b72= Te6edf3jsonTff7b72.Td2a8ffloadsTb4b4b4(Te6edf3procTff7b72.Td2a8ffstdoutTb4b4b4)
Tff7b72except Te6edf3jsonTff7b72.Td2a8ffJSONDecodeErrorTb4b4b4:
Tff7b72return Tff7b72None
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3parsedTb4b4b4, Tffa657dictTb4b4b4) Tff7b72and Te6edf3parsedTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3parsedTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None
Te6edf3rows Tff7b72= Te6edf3_flatten_pnpm_licenses_jsonTb4b4b4(Te6edf3parsedTb4b4b4)
Tff7b72return Te6edf3rows Tff7b72or Tff7b72None
Tff7b72def Td2a8ff_flatten_pnpm_licenses_jsonTb4b4b4(Te6edf3dataTb4b4b4: Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4) Tff7b72-Tff7b72> Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]Tb4b4b4:
Te6edf3outTb4b4b4: Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4] Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3_license_keyTb4b4b4, Te6edf3packages Tff7b72in Te6edf3dataTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3packagesTb4b4b4, Tffa657listTb4b4b4)Tb4b4b4:
Tff7b72continue
Tff7b72for Te6edf3pkg Tff7b72in Te6edf3packagesTb4b4b4:
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3pkgTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72continue
Te6edf3name Tff7b72= Te6edf3pkgTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff?Ta5d6ff"
Te6edf3versions Tff7b72= Te6edf3pkgTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffversionsTa5d6ff"Tb4b4b4) Tff7b72or Tb4b4b4[Tb4b4b4]
Te6edf3version Tff7b72= Te6edf3versionsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72if Te6edf3versions Tff7b72else Ta5d6ff"Ta5d6ff?Ta5d6ff"
Te6edf3author Tff7b72= Te6edf3pkgTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffauthorTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff—Ta5d6ff"
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3authorTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Te6edf3author Tff7b72= Tffa657strTb4b4b4(Te6edf3authorTb4b4b4)
Te6edf3lic Tff7b72= Te6edf3pkgTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflicenseTa5d6ff"Tb4b4b4) Tff7b72or Te6edf3_license_key Tff7b72or Ta5d6ff"Ta5d6ff—Ta5d6ff"
Te6edf3outTff7b72.Td2a8ffappendTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4: Te6edf3nameTb4b4b4,
Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4: Tffa657strTb4b4b4(Te6edf3versionTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffauthorTa5d6ff"Tb4b4b4: Te6edf3authorTb4b4b4,
Ta5d6ff"Ta5d6fflicenseTa5d6ff"Tb4b4b4: Tffa657strTb4b4b4(Te6edf3licTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Te6edf3outTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3rTb4b4b4: Te6edf3rTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3out
Tff7b72def Td2a8ff_embedded_data_pathsTb4b4b4(Te6edf3filenameTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tffa657listTb4b4b4[Te6edf3PathTb4b4b4]Tb4b4b4:
Te6edf3paths Tff7b72= Tb4b4b4[Te6edf3PathTb4b4b4(Tff7b72__file__Tb4b4b4)Tff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparent Tff7b72/ Ta5d6ff"Ta5d6ffdataTa5d6ff" Tff7b72/ Te6edf3filenameTb4b4b4]
Te6edf3exe_parent Tff7b72= Te6edf3PathTb4b4b4(Te6edf3sysTff7b72.Td2a8ffexecutableTb4b4b4)Tff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparent
Te6edf3pathsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3exe_parent Tff7b72/ Te6edf3filenameTb4b4b4)
Te6edf3pathsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3exe_parent Tff7b72/ Ta5d6ff"Ta5d6ffdataTa5d6ff" Tff7b72/ Te6edf3filenameTb4b4b4)
Te6edf3pathsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3exe_parent Tff7b72/ Te6edf3_DATA_SUBPATH Tff7b72/ Te6edf3filenameTb4b4b4)
Te6edf3seenTb4b4b4: Tffa657setTb4b4b4[Tffa657strTb4b4b4] Tff7b72= Tffa657setTb4b4b4(Tb4b4b4)
Te6edf3unique_pathsTb4b4b4: Tffa657listTb4b4b4[Te6edf3PathTb4b4b4] Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3path Tff7b72in Te6edf3pathsTb4b4b4:
Te6edf3key Tff7b72= Tffa657strTb4b4b4(Te6edf3pathTb4b4b4)
Tff7b72if Te6edf3key Tff7b72in Te6edf3seenTb4b4b4:
Tff7b72continue
Te6edf3seenTff7b72.Td2a8ffaddTb4b4b4(Te6edf3keyTb4b4b4)
Te6edf3unique_pathsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3pathTb4b4b4)
Tff7b72return Te6edf3unique_paths
Tff7b72def Td2a8ff_load_embedded_frontend_licensesTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4] Tff7b72| Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3path Tff7b72in Te6edf3_embedded_data_pathsTb4b4b4(Te6edf3_FRONTEND_LICENSES_FILENAMETb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3pathTff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72continue
Tff7b72tryTb4b4b4:
Te6edf3raw Tff7b72= Te6edf3jsonTff7b72.Td2a8ffloadsTb4b4b4(Te6edf3pathTff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72except Tb4b4b4(Tf85149OSErrorTb4b4b4, Te6edf3jsonTff7b72.Td2a8ffJSONDecodeErrorTb4b4b4)Tb4b4b4:
Tff7b72continue
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3rawTb4b4b4, Tffa657listTb4b4b4)Tb4b4b4:
Tff7b72continue
Tff7b72return Tb4b4b4[Te6edf3x Tff7b72for Te6edf3x Tff7b72in Te6edf3raw Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3xTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4]
Tff7b72return Tff7b72None
Tff7b72def Td2a8ffcollect_frontend_licensesTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657tupleTb4b4b4[Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]Tb4b4b4, Tffa657strTb4b4b4]Tb4b4b4:
Te6edf3embedded Tff7b72= Te6edf3_load_embedded_frontend_licensesTb4b4b4(Tb4b4b4)
Te6edf3repo Tff7b72= Te6edf3_repo_rootTb4b4b4(Tb4b4b4)
Te6edf3pj Tff7b72= Te6edf3repo Tff7b72/ Ta5d6ff"Ta5d6ffpackage.jsonTa5d6ff"
Tff7b72def Td2a8ff_apply_root_filterTb4b4b4(Te6edf3rowsTb4b4b4: Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]Tb4b4b4) Tff7b72-Tff7b72> Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]Tb4b4b4:
Tff7b72return Te6edf3_filter_out_workspace_root_packageTb4b4b4(Te6edf3rowsTb4b4b4, Te6edf3repoTb4b4b4) Tff7b72if Te6edf3pjTff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4) Tff7b72else Te6edf3rows
Tff7b72if Tff7b72not Te6edf3pjTff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3embeddedTb4b4b4:
Tff7b72return Te6edf3_apply_root_filterTb4b4b4(Te6edf3embeddedTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffembeddedTa5d6ff"
Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Te6edf3pnpm_rows Tff7b72= Te6edf3_try_pnpm_licensesTb4b4b4(Te6edf3repoTb4b4b4)
Tff7b72if Te6edf3pnpm_rowsTb4b4b4:
Tff7b72return Te6edf3_apply_root_filterTb4b4b4(Te6edf3pnpm_rowsTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffpnpmTa5d6ff"
Te6edf3nm_rows Tff7b72= Te6edf3collect_frontend_from_node_modulesTb4b4b4(Te6edf3repoTb4b4b4)
Tff7b72if Te6edf3nm_rowsTb4b4b4:
Tff7b72return Te6edf3_apply_root_filterTb4b4b4(Te6edf3nm_rowsTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffnode_modulesTa5d6ff"
Tff7b72if Te6edf3embeddedTb4b4b4:
Tff7b72return Te6edf3_apply_root_filterTb4b4b4(Te6edf3embeddedTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffembeddedTa5d6ff"
Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Tff7b72def Td2a8ffbuild_licenses_payloadTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4:
Te6edf3backend Tff7b72= Te6edf3collect_backend_licensesTb4b4b4(Tb4b4b4)
Te6edf3frontendTb4b4b4, Te6edf3fe_source Tff7b72= Te6edf3collect_frontend_licensesTb4b4b4(Tb4b4b4)
Tff7b72return Tb4b4b4{
Ta5d6ff"Ta5d6ffbackendTa5d6ff"Tb4b4b4: Te6edf3backendTb4b4b4,
Ta5d6ff"Ta5d6fffrontendTa5d6ff"Tb4b4b4: Te6edf3frontendTb4b4b4,
Ta5d6ff"Ta5d6ffmetaTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffgenerated_atTa5d6ff"Tb4b4b4: Te6edf3datetimeTff7b72.Td2a8ffnowTb4b4b4(Te6edf3UTCTb4b4b4)Tff7b72.Td2a8ffisoformatTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff+00:00Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffZTa5d6ff"Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffbackend_countTa5d6ff"Tb4b4b4: Tffa657lenTb4b4b4(Te6edf3backendTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6fffrontend_countTa5d6ff"Tb4b4b4: Tffa657lenTb4b4b4(Te6edf3frontendTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6fffrontend_sourceTa5d6ff"Tb4b4b4: Te6edf3fe_sourceTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}
Tff7b72def Td2a8ffrender_third_party_noticesTb4b4b4(Te6edf3payloadTb4b4b4: Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4) Tff7b72-Tff7b72> Tffa657strTb4b4b4:
T8b949e"""Render third-party dependency notices as plain text."""
Te6edf3meta Tff7b72= Te6edf3payloadTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffmetaTa5d6ff"Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4) Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3payloadTb4b4b4, Tffa657dictTb4b4b4) Tff7b72else Tb4b4b4{Tb4b4b4}
Te6edf3generated_at Tff7b72= Tffa657strTb4b4b4(Te6edf3metaTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffgenerated_atTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffunknownTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3frontend_source Tff7b72= Tffa657strTb4b4b4(Te6edf3metaTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fffrontend_sourceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffunknownTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3lines Tff7b72= Tb4b4b4[
Ta5d6ff"Ta5d6ffReticulum MeshChatX - Third-party noticesTa5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ffGenerated at: Tffd700{Te6edf3generated_atTffd700}Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ffFrontend source: Tffd700{Te6edf3frontend_sourceTffd700}Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff"Tb4b4b4,
Tb4b4b4]
Te6edf3sectionsTb4b4b4: Tffa657listTb4b4b4[Tffa657tupleTb4b4b4[Tffa657strTb4b4b4, Tffa657listTb4b4b4[Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4]Tb4b4b4]Tb4b4b4] Tff7b72= Tb4b4b4[
Tb4b4b4(Ta5d6ff"Ta5d6ffPython dependenciesTa5d6ff"Tb4b4b4, Te6edf3payloadTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffbackendTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ffNode dependenciesTa5d6ff"Tb4b4b4, Te6edf3payloadTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fffrontendTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4]
Tff7b72for Te6edf3titleTb4b4b4, Te6edf3rows Tff7b72in Te6edf3sectionsTb4b4b4:
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3titleTb4b4b4)
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff" Tff7b72* Tffa657lenTb4b4b4(Te6edf3titleTb4b4b4)Tb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3rowsTb4b4b4, Tffa657listTb4b4b4) Tff7b72or Tff7b72not Te6edf3rowsTb4b4b4:
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6ffNo entries.Ta5d6ff"Tb4b4b4)
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72continue
Tff7b72for Te6edf3row Tff7b72in Te6edf3rowsTb4b4b4:
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3rowTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72continue
Te6edf3name Tff7b72= Tffa657strTb4b4b4(Te6edf3rowTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff?Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3version Tff7b72= Tffa657strTb4b4b4(Te6edf3rowTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff?Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3author Tff7b72= Tffa657strTb4b4b4(Te6edf3rowTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffauthorTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff—Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3license_name Tff7b72= Tffa657strTb4b4b4(Te6edf3rowTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflicenseTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff—Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3nameTffd700}Ta5d6ff Tffd700{Te6edf3versionTffd700}Ta5d6ff"Tb4b4b4)
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff License: Tffd700{Te6edf3license_nameTffd700}Ta5d6ff"Tb4b4b4)
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff Author: Tffd700{Te6edf3authorTffd700}Ta5d6ff"Tb4b4b4)
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72return Ta5d6ff"Tffea00\nTa5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3linesTb4b4b4)Tff7b72.Td2a8ffrstripTb4b4b4(Tb4b4b4) Tff7b72+ Ta5d6ff"Tffea00\nTa5d6ff"
Tff7b72def Td2a8ffwrite_embedded_license_artifactsTb4b4b4(Te6edf3repo_rootTb4b4b4: Te6edf3Path Tff7b72| Tff7b72None Tff7b72= Tff7b72NoneTb4b4b4) Tff7b72-Tff7b72> Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4:
T8b949e"""Generate and write embedded license metadata and notices artifacts."""
Tff7b72if Te6edf3repo_root Tff7b72is Tff7b72NoneTb4b4b4:
Te6edf3repo_root Tff7b72= Te6edf3_repo_rootTb4b4b4(Tb4b4b4)
Te6edf3data_dir Tff7b72= Te6edf3repo_root Tff7b72/ Te6edf3_DATA_SUBPATH
Te6edf3data_dirTff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3parentsTff7b72=Tff7b72TrueTb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3payload Tff7b72= Te6edf3build_licenses_payloadTb4b4b4(Tb4b4b4)
Te6edf3frontend Tff7b72= Te6edf3payloadTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fffrontendTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)
Te6edf3meta Tff7b72= Te6edf3payloadTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffmetaTa5d6ff"Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4) Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3payloadTb4b4b4, Tffa657dictTb4b4b4) Tff7b72else Tb4b4b4{Tb4b4b4}
Te6edf3frontend_source Tff7b72= Tffa657strTb4b4b4(Te6edf3metaTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fffrontend_sourceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffunknownTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3frontend_path Tff7b72= Te6edf3data_dir Tff7b72/ Te6edf3_FRONTEND_LICENSES_FILENAME
Te6edf3notices_path Tff7b72= Te6edf3data_dir Tff7b72/ Te6edf3_THIRD_PARTY_NOTICES_FILENAME
Te6edf3frontend_rows Tff7b72= Te6edf3frontend Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3frontendTb4b4b4, Tffa657listTb4b4b4) Tff7b72else Tb4b4b4[Tb4b4b4]
Te6edf3should_write_frontend Tff7b72= Tb4b4b4(
Tffa657boolTb4b4b4(Te6edf3frontend_rowsTb4b4b4)
Tff7b72or Tff7b72not Te6edf3frontend_pathTff7b72.Td2a8ffexistsTb4b4b4(Tb4b4b4)
Tff7b72or Te6edf3frontend_source
Tff7b72in Tb4b4b4(
Ta5d6ff"Ta5d6ffpnpmTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffnode_modulesTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tb4b4b4)
Tff7b72if Te6edf3should_write_frontendTb4b4b4:
Te6edf3frontend_pathTff7b72.Td2a8ffwrite_textTb4b4b4(
Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Te6edf3frontend_rowsTb4b4b4, Te6edf3indentTff7b72=T79c0ff2Tb4b4b4, Te6edf3ensure_asciiTff7b72=Tff7b72FalseTb4b4b4) Tff7b72+ Ta5d6ff"Tffea00\nTa5d6ff"Tb4b4b4,
Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3notices_pathTff7b72.Td2a8ffwrite_textTb4b4b4(Te6edf3render_third_party_noticesTb4b4b4(Te6edf3payloadTb4b4b4)Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72return Tb4b4b4{
Ta5d6ff"Ta5d6fffrontend_pathTa5d6ff"Tb4b4b4: Tffa657strTb4b4b4(Te6edf3frontend_pathTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6fffrontend_countTa5d6ff"Tb4b4b4: Tffa657lenTb4b4b4(Te6edf3frontend_rowsTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6fffrontend_writtenTa5d6ff"Tb4b4b4: Te6edf3should_write_frontendTb4b4b4,
Ta5d6ff"Ta5d6ffnotices_pathTa5d6ff"Tb4b4b4: Tffa657strTb4b4b4(Te6edf3notices_pathTb4b4b4)Tb4b4b4,
Tb4b4b4}
Tff7b72def Td2a8ffmainTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657intTb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Te6edf3sysTff7b72.Td2a8ffargvTb4b4b4) Tff7b72> T79c0ff1 Tff7b72and Te6edf3sysTff7b72.Td2a8ffargvTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ff--write-artifactsTa5d6ff"Tb4b4b4:
Te6edf3result Tff7b72= Te6edf3write_embedded_license_artifactsTb4b4b4(Tb4b4b4)
Tffa657printTb4b4b4(Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Te6edf3resultTb4b4b4, Te6edf3indentTff7b72=T79c0ff2Tb4b4b4)Tb4b4b4)
Tff7b72return T79c0ff0
Tffa657printTb4b4b4(Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Te6edf3build_licenses_payloadTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3indentTff7b72=T79c0ff2Tb4b4b4)Tb4b4b4)
Tff7b72return T79c0ff0
Tff7b72if Tff7b72__name__ Tff7b72== Ta5d6ff"Ta5d6ff__main__Ta5d6ff"Tb4b4b4:
Tff7b72raise Tf85149SystemExitTb4b4b4(Te6edf3mainTb4b4b4(Tb4b4b4)Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────